package com.linchong.heap.easy;
import java.util.PriorityQueue;

/**
 * @author linchong
 * @version 1.0
 * @Date: 2020-12-01 19:49
 * @Description: KthLargestElementInAnArray$215-数组中的第K个最大元素
 *
 * 在未排序的数组中找到第 k 个最大的元素。请注意，你需要找的是数组排序后的第 k 个最大的元素，而不是第 k 个不同的元素。
 *
 * 示例 1:
 *
 * 输入: [3,2,1,5,6,4] 和 k = 2
 * 输出: 5
 * 示例 2:
 *
 * 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4
 * 输出: 4
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/kth-largest-element-in-an-array
 *
 *
 */
@SuppressWarnings("unused")
public class KthLargestElementInAnArray {
	public int findKthLargest(int[] nums, int k) {
		PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(k);
		for (int i = 0;i<nums.length;i++) {
			if(i<k){
				priorityQueue.add(nums[i]);
				continue;
			}

			if(priorityQueue.peek()==null){
				return -1;
			}
			int top = priorityQueue.peek();
			if(nums[i]>top){
				priorityQueue.poll();
				priorityQueue.add(nums[i]);
			}
		}
		if(priorityQueue.peek()==null){
			return -1;
		}
		return priorityQueue.peek();
	}
}


























